Computer-based devices include one or more microprocessors, memory and associated logic that provide an execution environment for software. Such devices are susceptible to memory corruption caused by electromagnetic interference inside the devices that spontaneously toggles or “flips” bit values stored to the memory device, particularly when the memory device includes dynamic random access memory (DRAM) parts. Memory devices may also include or develop component defects that result in one or more storage bits becoming “stuck” at a particular bit value that cannot be altered by the write circuitry.
Error-correcting code (ECC) memory has been developed to include dedicated circuitry and dedicated redundant storage elements to enable hardware-based detection and, where possible, automatic correction of memory errors. ECC memory devices receive writable data and generate checksums from the binary sequences in the data bytes. ECC circuitry then writes the data to memory and also store the generated checksums to memory locations dedicated to error protection. For read operations, ECC memory devices retrieve data from memory in conjunction with the checksums generated for the retrieved data. ECC circuitry then recomputes the checksum to determine whether any of the retrieved data bits are corrupt in view of the retrieved checksums. Upon detecting corruption, the ECC circuitry corrects the error where possible and notifies the operating system or memory controller of the error where correction is not possible.